The technology described herein relates to data processing systems, and in particular to data processing systems, e.g. implemented as a System-on-Chip, that include both a graphics processing unit (a graphics processor) and a video decoder (e.g. in the form of a video processor).
FIG. 1 shows an exemplary data processing system 100 that includes a system on chip (SoC) 102, main memory 116, and a display 118.
The SoC 102 comprises a central processing unit (CPU) 104, a graphics processing unit (GPU) 106, a video (coding) engine (processor) 108, a display controller 110, an interconnect 112 and a memory controller 114.
As is shown in FIG. 1, the CPU 104, GPU 106, video engine 108, and display controller 110 communicate with each other via the interconnect 112 and with the memory 116 via the interconnect 112 and memory controller 114. The display controller 110 also communicates with the display 118.
In such a data processing system, the graphics processing unit 106 will generate render outputs, such as output frames to be displayed, and then, e.g., store them in the memory 116 from where they can, e.g., be retrieved, e.g, by the display controller 110 for providing to and displaying on the display 118.
As part of such graphics processing, it is common to perform so called “texture mapping”, i.e. to generate colours (or other data) for sampling positions of the render output, such as an output frame for display, by applying so-called textures or texture data to the surfaces to be rendered. For example, surface detail on objects may be generated by applying a pre-defined “texture” to a set of primitives representing the object. Such textures are typically provided as a stored array of texture elements or “texels”, each representing given texture data (such as colour, luminance, or light/shadow, etc., values), with the texels then being mapped onto the corresponding elements, such as (and, indeed, typically) a set of sampling positions, for the render output being generated. The stored arrays of texture elements (data) are typically referred to as “texture maps”.
Texture maps may, e.g., be pre-defined, and provided, e.g., with the application (e.g. game) that requires the graphics processing. Additionally or alternatively, a graphics processing unit may be controlled to generate a texture or textures that it will then subsequently use when generating a further render output, such as an output frame for display.
In such arrangements, the texture or textures to be used will typically be stored in the memory 116, and then the data for those textures will be read in appropriately by the graphics processing unit 106 (or other elements of the data processing system 100) when that data is required.
The use of textures and texture mapping can provide higher image quality, but has a number of drawbacks. In particular, the storage of the texture data and accessing it in use can place, e.g., high storage and bandwidth requirements on a graphics processing device. This is particularly significant for mobile (portable) devices that perform graphics processing, as such devices are inherently limited in their e.g., storage, bandwith and power resources and capabilities.
The Applicants believe that there remains scope for improved handling and use of textures and texture data in data processing systems that include a graphics processor that uses texture data.
Like reference numerals are used for like components where appropriate in the drawings.